package com.yixun.qfbao.api.service;

import com.yixun.qfbao.apidto.*;
import com.yixun.qfbao.apidto.v10dto.ForgetPwdReqDto;

/**
 * Created by Administrator on 2017/11/22.
 */
public interface PersonnelService {
    /**
     * 重置密码，校验短信验证码与账户
     * @param dto
     * @return
     */
    ResetPwdResDto resetPwd(ResetPwdReqDto dto);

    /**
     * 重置密码，校验短信验证码与账户
     * @param dto
     * @return
     */
    ResetPwdResDto resetPwdByForget(ResetPwdByForgetReqDto dto);

    /**
     * 修改密码
     * @param dto
     * @return
     */
    UpdatePwdResDto updatePwd(UpdatePwdReqDto dto);

    /**
     * 新增人员
     * @param dto
     * @return
     */
    AddPartnerResDto addPartner(AddPartnerReqDto dto);

    /**
     * 新增人员-快速添加
     * @param dto
     * @return
     */
    AddPartnerQuickResDto addPartnerQuick(AddPartnerQuickReqDto dto);

    /**
     * 编辑人员
     * @param dto
     * @return
     */
    EditPartnerResDto editPartner(EditPartnerReqDto dto);

    /**
    *@Description
    *@Author sangtao
    *@Date 2017/11/23
    *@param dto
    **/
    DelPartnerResDto delPartner(DelPartnerReqDto dto);

    /**
    *@Description
    *@Author sangtao
    *@Date 2017/11/23
    *@param dto
    **/
    ForbiddenOrNotPartnerResDto forbiddenOrNotPartner(ForbiddenOrNotPartnerReqDto dto);

    /**
    *@Description
    *@Author sangtao
    *@Date 2017/11/23
    *@param dto
    **/
    GetDevPartnerPageResDto getDevPartnerPage(GetDevPartnerPageReqDto dto);

    /**
     * 设置驻场人员时，查看除超级管理员外的所有成员
     * @param dto
     * @return
     */
    GetDevPartnerPageResDto getDevNewPartnerPage(GetDevPartnerPageReqDto dto);

    /**
    *@Description
    *@Author sangtao
    *@Date 2017/11/24
    *@param dto
    **/
    GetAgentPartnerPageResDto getAgentPartnerPage(GetAgentPartnerPageReqDto dto);

    /**
    *@description
    *@author sangtao
    *@date 2017/11/24
    *@param dto
    **/
    GetPartnerByCompanyResDto getPartnerByCompany(GetPartnerByCompanyReqDto dto);

    /**
    *@description
    *@author sangtao
    *@date 2017/11/24
    *@param dto
    **/
    GetPartnerByPremisesResDto getPartnerByPremises(GetPartnerByPremisesReqDto dto);

    /**
    *@description
    *@author sangtao
    *@date 2017/11/24
    *@param dto
    **/
    GetPartnerByAgentOrgResDto getPartnerByAgentOrg(GetPartnerByAgentOrgReqDto dto);

    /**
    *@description
    *@author sangtao
    *@date 2017/11/24
    *@param dto
    **/
    GetPartnerCountByAgentOrgResDto getPartnerCountByAgentOrg(GetPartnerCountByAgentOrgReqDto dto);


    /**
    *@description
    *@author sangtao
    *@date 2017/11/24
    *@param dto
    **/
    GetPartnerByDeptResDto getPartnerByDept(GetPartnerByDeptReqDto dto);

    /**
    *@description
    *@author sangtao
    *@date 2017/11/24
    *@param dto
    **/
    GetUserByIdResDto getUserById(GetUserByIdReqDto dto);

    /**
    *@description
    *@author sangtao
    *@date 2017/11/25
    *@param dto
    **/
    RegisterPartnerResDto registerPartner(RegisterPartnerReqDto dto);

    /**
    *@description
    *@author sangtao
    *@date 2017/11/25
    *@param dto
    **/
    ImportUserResDto importUser(ImportUserReqDto dto);

    /**
    *@description
    *@author sangtao
    *@date 2017/11/25
    *@param dto
    **/
    ExportPartnerResDto exportPartner(ExportPartnerReqDto dto);

    Integer selectPartnerCountByCompanyId(Long merchentId);

    /**
     * 获取经纪人详情
     * @author JHSong
     * @param reqDto
     */
    GetPartnerDetailResDto getPartnerDetail(GetPartnerDetailReqDto reqDto);

    /**
     * 新用户注册
     * @param registReqDto
     * @return
     * @throws Exception
     */
    RegistResDto regist(RegistReqDto registReqDto) throws Exception;
    /**
     * 初始化
     *@author xiaojin.li
     *@date 2017年12月7日下午4:02:26
     *@param reqDto
     *@return
     *@throws Exception
     */
    InitPasswordResDto initPassword(InitPasswordReqDto reqDto) throws Exception;

    /**
    *@description 人员转移部门
    *@author sangtao
    *@date 2017/12/20
    *@param dto
    **/
    UserChangeDeptResDto userChangeDept(UserChangeDeptReqDto dto);

    ForgetPwdResDto forgetPwd(ForgetPwdReqDto forgetPwdReqDto);
}
